package org.budo.phone.freeswitch;

import java.util.Map;

import org.budo.phone.api.CallCenterAgent;
import org.budo.phone.api.CallCenterQueue;
import org.budo.phone.api.CallCenterTier;

/**
 * @author lmw
 */
public interface FreeswitchEslClient {
    void assertInited();

    void close();

    boolean canSend();

    Integer getPort();

    String getHost();

    Boolean sofiaStatusProfileInternalReg(String authUser);

    String findCallIdByUUID(String uuid);

    void uuidKill(String uuid);

    void sendApiCommand(String command, String arg);

    Map<String, CallCenterQueue> callCenterQueueList();

    Map<String, CallCenterTier> callCenterTierList();

    Map<String, CallCenterAgent> callCenterAgentList(String queueName);

    void callCenterAgentDel(String agentName);

    void callCenterAgentSetStatus(String agentName, String status);

    void callCenterAgentSetState(String agentName, String state);

    String callCenterAgentGetState(String user);

    String callCenterGetAgentUuid(String user);


    void sendBgApiCommand(String command, String arg);

    String getSipUserCallUUID(String user);

    String generateCallUUID();

    String getSipUserCallState(String user);

    void UUIDFileMan(String uuid,String state);

    void callCenterAgentAdd(String agentName);

    void callCenterAgentSetContact(String agentName);

    void callCenterAgentSetWrapUptime(String agentName ,int time);

    void callCenterAgentSetRejectDelayTime(String agentName,int time);

    void callCenterAgentSetBusyDelayTime(String agentName,int time);

    void callCenterTierAdd(String agentName, String queueName);

    boolean uuidExists(String callId);
}